package com.eastfair.pay.entity;

import cn.afterturn.easypoi.excel.annotation.Excel;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.eastfair.annotation.model.EchoVO;
import com.eastfair.core.base.entity.Entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.Map;

import static com.baomidou.mybatisplus.annotation.SqlCondition.LIKE;
import static com.eastfair.core.utils.DateUtils.DEFAULT_DATE_TIME_FORMAT;

/**
 * <p>
 * 实体类
 * 退款记录
 * </p>
 *
 * @author clm
 * @since 2022-06-08
 */
@Data
@NoArgsConstructor
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("pay_refund_record")
@ApiModel(value = "RefundRecord", description = "退款记录")
@AllArgsConstructor
public class RefundRecord extends Entity<Long> implements EchoVO {

    private static final long serialVersionUID = 1L;
    @TableField(exist = false)
    private Map<String, Object> echoMap = new HashMap<>();
    /**
     * 是否启用：1是；0否
     */
    @ApiModelProperty(value = "是否启用：1是；0否")
    @TableField(value = "is_enabled")
    @Excel(name = "是否启用：1是；0否")
    private Integer isEnabled;

    /**
     * 是否删除：1是；0否
     */
    @ApiModelProperty(value = "是否删除：1是；0否")
    @TableField(value = "is_deleted")
    @Excel(name = "是否删除：1是；0否")
    private Integer isDeleted;

    /**
     * 项目id
     */
    @ApiModelProperty(value = "项目id")
    @TableField(value = "project_id")
    @Excel(name = "项目id")
    private Long projectId;

    /**
     * 子系统id
     */
    @ApiModelProperty(value = "子系统id")
    @TableField(value = "subsystem_id")
    @Excel(name = "子系统id")
    private Long subsystemId;

    /**
     * 租户id
     */
    @ApiModelProperty(value = "租户id")
    @TableField(value = "tenant_id")
    @Excel(name = "租户id")
    private Long tenantId;

    /**
     * 实际退款金额
     */
    @ApiModelProperty(value = "实际退款金额")
    @TableField(value = "refund_amount")
    @Excel(name = "实际退款金额")
    private BigDecimal refundAmount;

    /**
     * 退款时间
     */
    @ApiModelProperty(value = "退款时间")
    @TableField(value = "refund_time")
    @Excel(name = "退款时间", format = DEFAULT_DATE_TIME_FORMAT, width = 20)
    private LocalDateTime refundTime;

    /**
     * 退款申请id
     */
    @ApiModelProperty(value = "退款申请id")
    @NotNull(message = "请填写退款申请id")
    @TableField(value = "apply_refund_id")
    @Excel(name = "退款申请id")
    private Long applyRefundId;

    /**
     * 退款人员
     */
    @ApiModelProperty(value = "退款人员")
    @TableField(value = "refund_user_id")
    @Excel(name = "退款人员")
    private Long refundUserId;

    /**
     * 退款人员名称
     */
    @ApiModelProperty(value = "退款人员名称")
    @Size(max = 255, message = "退款人员名称长度不能超过255")
    @TableField(value = "refund_user_name", condition = LIKE)
    @Excel(name = "退款人员名称")
    private String refundUserName;


    @Builder
    public RefundRecord(Long id, Long createdBy, LocalDateTime createTime, Long updatedBy, LocalDateTime updateTime, 
                    Integer isEnabled, Integer isDeleted, Long projectId, Long subsystemId, Long tenantId, 
                    BigDecimal refundAmount, LocalDateTime refundTime, Long applyRefundId, Long refundUserId, String refundUserName) {
        this.id = id;
        this.createdBy = createdBy;
        this.createTime = createTime;
        this.updatedBy = updatedBy;
        this.updateTime = updateTime;
        this.isEnabled = isEnabled;
        this.isDeleted = isDeleted;
        this.projectId = projectId;
        this.subsystemId = subsystemId;
        this.tenantId = tenantId;
        this.refundAmount = refundAmount;
        this.refundTime = refundTime;
        this.applyRefundId = applyRefundId;
        this.refundUserId = refundUserId;
        this.refundUserName = refundUserName;
    }

}
